home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / hotkey / AutoHotkey104504_Install.exe / AutoHotkey.chm / docs / scripts / easywindowdrag.ahk < prev    next >
Text File  |  2006-11-15  |  2KB  |  46 lines

  1. ; Easy Window Dragging (requires XP/2k/NT)
  2. ; http://www.autohotkey.com
  3. ; Normally, a window can only be dragged by clicking on its title bar.
  4. ; This script extends that so that any point inside a window can be dragged.
  5. ; To activate this mode, hold down CapsLock or the middle mouse button while
  6. ; clicking, then drag the window to a new position.
  7.  
  8. ; Note: You can optionally release Capslock or the middle mouse button after
  9. ; pressing down the mouse button rather than holding it down the whole time.
  10. ; This script requires v1.0.25+.
  11.  
  12. ~MButton & LButton::
  13. CapsLock & LButton::
  14. CoordMode, Mouse  ; Switch to screen/absolute coordinates.
  15. MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
  16. WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin%
  17. WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% 
  18. if EWD_WinState = 0  ; Only if the window isn't maximized 
  19.     SetTimer, EWD_WatchMouse, 10 ; Track the mouse as the user drags it.
  20. return
  21.  
  22. EWD_WatchMouse:
  23. GetKeyState, EWD_LButtonState, LButton, P
  24. if EWD_LButtonState = U  ; Button has been released, so drag is complete.
  25. {
  26.     SetTimer, EWD_WatchMouse, off
  27.     return
  28. }
  29. GetKeyState, EWD_EscapeState, Escape, P
  30. if EWD_EscapeState = D  ; Escape has been pressed, so drag is cancelled.
  31. {
  32.     SetTimer, EWD_WatchMouse, off
  33.     WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY%
  34.     return
  35. }
  36. ; Otherwise, reposition the window to match the change in mouse coordinates
  37. ; caused by the user having dragged the mouse:
  38. CoordMode, Mouse
  39. MouseGetPos, EWD_MouseX, EWD_MouseY
  40. WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin%
  41. SetWinDelay, -1   ; Makes the below move faster/smoother.
  42. WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
  43. EWD_MouseStartX := EWD_MouseX  ; Update for the next timer-call to this subroutine.
  44. EWD_MouseStartY := EWD_MouseY
  45. return
  46.